<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:awc="clr-namespace:Assergs.Windows.Controls"
    xmlns:aw="clr-namespace:Assergs.Windows"    
    
	>
    
	<SolidColorBrush x:Key="ForegroundBrush" Color="{x:Static aw:ListViewPallet.Foreground}"/>
	<SolidColorBrush x:Key="NormalBorderBrush" Color="{x:Static aw:ListViewPallet.NormalBorder}"/>
	<SolidColorBrush x:Key="BodyBackgroundBrush" Color="{x:Static aw:ListViewPallet.BodyBackground}"/>
	<SolidColorBrush x:Key="LightBorderBrush" Color="{x:Static aw:ListViewPallet.LightBorder}"/>
	
	<SolidColorBrush x:Key="ControlsBackbroundBrush" Color="{x:Static aw:ListViewPallet.ControlsBackbround}"/>
	<SolidColorBrush x:Key="DisabledBorderBrush" Color="{x:Static aw:ListViewPallet.DisabledBorder}"/>
	<SolidColorBrush x:Key="DisabledForegroundBrush" Color="{x:Static aw:ListViewPallet.DisabledForeground}"/>
	
	<LinearGradientBrush x:Key="GridViewColumnHeaderBackgroundBrush" StartPoint="0.5,0" EndPoint="0.5,1">
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonBackground1}" Offset="0"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonBackground2}" Offset="0.4"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonBackground3}" Offset="0.4"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonBackground4}" Offset="1"/>
	</LinearGradientBrush>
	
	<LinearGradientBrush x:Key="GridViewColumnHeaderLightBackgroundBrush" StartPoint="0.5,0" EndPoint="0.5,1">
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonLightBackground1}" Offset="0"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonLightBackground2}" Offset="0.4"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonLightBackground3}" Offset="0.4"/>
		<GradientStop Color="{x:Static aw:ListViewPallet.ButtonLightBackground4}" Offset="1"/>
	</LinearGradientBrush>

	<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer">
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="ScrollViewer">
					<Grid Background="{TemplateBinding Background}">
						<Grid.ColumnDefinitions>
							<ColumnDefinition Width="*"/>
							<ColumnDefinition Width="Auto"/>
						</Grid.ColumnDefinitions>
						<Grid.RowDefinitions>
							<RowDefinition Height="*"/>
							<RowDefinition Height="Auto"/>
						</Grid.RowDefinitions>

						<DockPanel Margin="{TemplateBinding Padding}">
							<ScrollViewer DockPanel.Dock="Top"
								HorizontalScrollBarVisibility="Hidden"
								VerticalScrollBarVisibility="Hidden"
								Focusable="false">
								<GridViewHeaderRowPresenter Margin="0,0,0,0"
									Columns="{Binding Path=TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}"
									ColumnHeaderContainerStyle="{Binding Path=TemplatedParent.View.ColumnHeaderContainerStyle, RelativeSource={RelativeSource TemplatedParent}}"
									ColumnHeaderTemplate="{Binding Path=TemplatedParent.View.ColumnHeaderTemplate, RelativeSource={RelativeSource TemplatedParent}}"
									ColumnHeaderTemplateSelector="{Binding Path=TemplatedParent.View.ColumnHeaderTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}"
									AllowsColumnReorder="{Binding Path=TemplatedParent.View.AllowsColumnReorder, RelativeSource={RelativeSource TemplatedParent}}"
									ColumnHeaderContextMenu="{Binding Path=TemplatedParent.View.ColumnHeaderContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
									ColumnHeaderToolTip="{Binding Path=TemplatedParent.View.ColumnHeaderToolTip, RelativeSource={RelativeSource TemplatedParent}}"
									SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>	
							</ScrollViewer>

							<ScrollContentPresenter Name="PART_ScrollContentPresenter"
													KeyboardNavigation.DirectionalNavigation="Local"
													CanContentScroll="True"/>
							<!-- CanContentScroll="False" not support VirtualizingStackPanel!!! => Slower -->
							<!--<ScrollContentPresenter Name="PART_ScrollContentPresenter"
								KeyboardNavigation.DirectionalNavigation="Local"/>-->

						</DockPanel>

						<ScrollBar Name="PART_HorizontalScrollBar"
							Orientation="Horizontal"
							Grid.Row="1"
							Maximum="{TemplateBinding ScrollableWidth}"
							ViewportSize="{TemplateBinding ViewportWidth}"
							Value="{TemplateBinding HorizontalOffset}"
							Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

						<ScrollBar Name="PART_VerticalScrollBar"
							Grid.Column="1"
							Maximum="{TemplateBinding ScrollableHeight}"
							ViewportSize="{TemplateBinding ViewportHeight}"
							Value="{TemplateBinding VerticalOffset}"
							Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>

					</Grid>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

	<Style x:Key="GridViewColumnHeaderGripper" TargetType="Thumb">
		<Setter Property="Width" Value="18"/>
		<Setter Property="Background" Value="{StaticResource NormalBorderBrush}"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type Thumb}">
					<Border Padding="{TemplateBinding Padding}"	Background="Transparent">
						<Rectangle HorizontalAlignment="Center"
							Width="1"
							Fill="{TemplateBinding Background}"/>
					</Border>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

	<Style x:Key="{x:Type GridViewColumnHeader}" TargetType="GridViewColumnHeader">
		<Setter Property="HorizontalContentAlignment" Value="Center"/>
		<Setter Property="VerticalContentAlignment" Value="Center"/>
		<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="GridViewColumnHeader">
					<Grid>
						<Border Name="HeaderBorder"
							BorderThickness="0,1,0,1"
							BorderBrush="{StaticResource NormalBorderBrush}"
							Background="{StaticResource GridViewColumnHeaderBackgroundBrush}"
							Padding="2,0,2,0">
							<ContentPresenter Name="HeaderContent"
								Margin="0,0,0,1"
								VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
								HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
								RecognizesAccessKey="True"
								SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
						</Border>
						<Thumb x:Name="PART_HeaderGripper"
							HorizontalAlignment="Right"
							Margin="0,0,-9,0"
							Style="{StaticResource GridViewColumnHeaderGripper}"/>
					</Grid>
					
					<ControlTemplate.Triggers>
						<Trigger Property="IsMouseOver" Value="true">
							<Setter TargetName="HeaderBorder" Property="Background" Value="{StaticResource GridViewColumnHeaderLightBackgroundBrush}"/>
						</Trigger>
						<Trigger Property="IsPressed" Value="true">
							<Setter TargetName="HeaderBorder" Property="Background" Value="{StaticResource GridViewColumnHeaderBackgroundBrush}"/>
							<Setter TargetName="HeaderContent" Property="Margin" Value="1,1,0,0"/>
						</Trigger>
						<Trigger Property="IsEnabled" Value="false">
							<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
						</Trigger>
					</ControlTemplate.Triggers>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
		<Style.Triggers>
			<Trigger Property="Role" Value="Floating">
				<Setter Property="Opacity" Value="0.7"/>
				<Setter Property="Template">
					<Setter.Value>
						<ControlTemplate TargetType="GridViewColumnHeader">
							<Canvas Name="PART_FloatingHeaderCanvas">
								<Rectangle Fill="#60000000"
									Width="{TemplateBinding ActualWidth}"
									Height="{TemplateBinding ActualHeight}"/>
							</Canvas>
						</ControlTemplate>
					</Setter.Value>
				</Setter>
			</Trigger>
			<Trigger Property="Role" Value="Padding">
				<Setter Property="Template">
					<Setter.Value>
						<ControlTemplate TargetType="GridViewColumnHeader">
							<Border Name="HeaderBorder"
								BorderThickness="0,1,0,1"
								BorderBrush="{StaticResource NormalBorderBrush}"
								Background="{StaticResource GridViewColumnHeaderBackgroundBrush}"/>
						</ControlTemplate>
					</Setter.Value>
				</Setter>
			</Trigger>
		</Style.Triggers>
	</Style>

	<Style x:Key="GridViewItemContainerStyleKey_Test" TargetType="{x:Type ListViewItem}">	    
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="Background">
            <Setter.Value>
                <MultiBinding>
                    <MultiBinding.Converter>
                        <aw:ListViewAlternateHighlightConverter />
                    </MultiBinding.Converter>
                    <Binding RelativeSource="{RelativeSource Self}" />
                    <Binding Source="{StaticResource GridViewColumnHeaderLightBackgroundBrush}" />
                    <Binding Source="30" />
                    <!--% TRansparent-->
                </MultiBinding>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <!--<Border Name="Bd" 
							CornerRadius="2"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Padding="{TemplateBinding Padding}"
                            SnapsToDevicePixels="true">-->
                        <Border Name="Bd" 
							CornerRadius="2"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="1"
                            Padding="{TemplateBinding Padding}"
                            Margin="1"
                            SnapsToDevicePixels="true">
                        <!--remove the HorizontalAlignment due to HeaderRowPresenter does not have the ability to align to center or right-->
                        <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Bd" Property="Background" Value="{StaticResource GridViewColumnHeaderLightBackgroundBrush}"/>
                            <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource LightBorderBrush}" />
                            <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>
                        </Trigger>
                        <!--<MultiTrigger> 
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="true"/>
                                <Condition Property="Selector.IsSelectionActive" Value="false"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="Bd" Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                        </MultiTrigger>-->
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

	<Style x:Key="{x:Type ListView}" TargetType="{x:Type ListView}">
		<Setter Property="SnapsToDevicePixels" Value="true"/>
		<Setter Property="OverridesDefaultStyle" Value="true"/>
		<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
		<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
		<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
		<Setter Property="VerticalContentAlignment" Value="Center"/>
		<Setter Property="ItemContainerStyle" Value="{StaticResource GridViewItemContainerStyleKey_Test}"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type ListView}">
					<Border Name="Border"
						CornerRadius="2"
						BorderThickness="1"
						BorderBrush="{StaticResource NormalBorderBrush}"
						Background="{StaticResource ControlsBackbroundBrush}">
						<ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}">
							<ItemsPresenter />
						</ScrollViewer>
					</Border>
					
					<ControlTemplate.Triggers>
						<Trigger Property="IsGrouping" Value="true">
							<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
						</Trigger>
						<Trigger Property="IsEnabled" Value="false">
							<Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBorderBrush}"/>
							<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>
						</Trigger>
					</ControlTemplate.Triggers>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
		
	</Style>

</ResourceDictionary>